Probabilistic Programming in Julia New Inference Algorithms
نویسنده
چکیده
In this thesis we look at the design and development of a Probabilistic Programming Language (PPL) in Julia named Turing and the challenges of implementing the Hamiltonian Monte Carlo (HMC) sampler inside the Turing framework. This dissertation starts with a review of three important fields behind the project, which are Bayesian inference, general inference algorithms and probabilistic programming. This review provides theoretical foundations of the design of a universal PPL. Then some existing PPLs are reviewed, especially Stan and the up-to-date version of Turing. It is shown that, compared with Stan, Turing is more expressive and flexible in general. After that, the design and implementation of the HMC sampler is given. This part starts with the design of the compiler, in which a metaprogramming technique called macro is used to support three probabilistic syntax in Turing. Then the implementation of the standard HMC algorithm is discussed. In the Turing framework, two core ingredients of HMC, the target density function and the corresponding gradient function, are not straightforward to evaluate, which are the two main challenges of this project. The first issue is solved by building connections between the probabilistic program and the corresponding energy function required by HMC using Bayes’ rule, and the second one is accomplished by the use of Automatic Differentiation (AD) through probabilistic programs. Evaluations on the implemented HMC sampler have shown that the implementation is correct and the speed of the sampler is acceptable. Further improvements in terms of the performance of the HMC sampler and the functionality of Turing are proposed in the end. The main novel contributions of this thesis are a workable HMC sampler in Turing with acceptable performance as well as an updated version of the compiler which supports this HMC sampler and the further development of a Gibbs sampler combining HMC and PG.
منابع مشابه
Variational Inference in Probabilistic Programs a formal derivation of a Black-Box approach
Probabilistic models are used in many elds to tackle di erent problems, ranging from image recognition to diagnosing diseases. The advantage of using models is that we can split the encoding of our problem into a probabilistic model from the ways we solve it. We can also classify models to develop some class-speci c, but not problem-speci c algorithms to solve given tasks. These algorithms are ...
متن کاملLazy Factored Inference for Functional Probabilistic Programming
Probabilistic programming provides the means to represent and reason about complex probabilistic models using programming language constructs. Even simple probabilistic programs can produce models with infinitely many variables. Factored inference algorithms are widely used for probabilistic graphical models, but cannot be applied to these programs because all the variables and factors have to ...
متن کاملStan: A probabilistic programming language for Bayesian inference and optimization∗
Abstract Stan is a free and open-source C++ program that performs Bayesian inference or optimization for arbitrary user-specified models and can be called from the command line, R, Python, Matlab, or Julia, and has great promise for fitting large and complex statistical models in many areas of application. We discuss Stan from users’ and developers’ perspective and illustrate with a simple but ...
متن کاملBucket elimination: A unifying framework for probabilistic inference
Probabilistic inference algorithms for belief updating, nding the most probable explanation, the maximum a posteriori hypothesis, and the maximum expected utility are reformulated within the bucket elimination framework. This emphasizes the principles common to many of the algorithms appearing in the probabilistic inference literature and clari es the relationship of such algorithms to nonseria...
متن کاملQuicksand: A Lightweight Implementation of Probabilistic Programming for Procedural Modeling and Design
The past several years have seen the development of multiple probabilistic programming languages (PPLs) in the artificial intelligence community [9, 5, 12, 13, 7, 11]. In addition to their expressiveness, PPLs allow programmers to develop models modularly and independently from inference algorithms. Over the same period, computer graphics research has begun to demonstrate how probabilistic infe...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2016